Programming Languages for Scalable Software Extension and Composition
نویسندگان
چکیده
class Exp { Type type; abstract Exp accept(Visitor v); } class Abs extends Exp { String x; Exp e; // λx.e Exp accept(Visitor v) { e = e.accept(v); return v.visitAbs(this); } } class Visitor { Exp visitAbs(Abs a) { return a; } } class TypeChecker extends Visitor { Exp visitAbs(Abs a) { ... } } class Emitter extends Visitor { Exp visitAbs(Abs a) { print(...); return a; } } class Compiler { void main() { ... } Exp parse() { ... } } Figure 3.2: Lambda calculus compiler
منابع مشابه
Well-formed and scalable invasive software composition
Software components provide essential means to structure and organize software effectively. However, frequently, required component abstractions are not available in a programming language or system, or are not adequately combinable with each other. Invasive software composition (ISC) is a general approach to software composition that unifies component-like abstractions such as templates, aspec...
متن کاملNested Intersection for Scalable Software Composition
This paper introduces a programming language that makes it convenient to compose large software systems, combining their features in a modular way. J& supports nested intersection, building on earlier work on nested inheritance in the language Jx. Nested inheritance permits modular, type-safe extension of a package (including nested packages and classes), while preserving existing type relation...
متن کاملOn the Feasibility of Feature based composition for programming in the large
Feature-based composition complements object-oriented composition by enabling the coherent extension of multiple entities (objects, classes). This paradigm enables an integral feature to be the subject of composition rather than fragments of features. The conventional object model of state-of-the-art OO programming languages does not incorporate the notion of features. Therefore, in the traditi...
متن کاملExtending Java to Support Component-Based Programming
Java Layers extends the Java programming language by implementing a software component model based on layer composition. Each layer implements a single design feature and may contain code that crosscuts multiple classes. Layer composition enables large software applications to be constructed in a more modular way, and with a higher level of semantic checking, than is typically achieved using cu...
متن کاملType-Safe Prototype-Based Component Evolution
Component-based programming is currently carried out using mainstream object-oriented languages. These languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility. This paper investigates abstractions for component-oriented programming on the programming language level. We propose a simple prototype-based model for first-class components o...
متن کامل